#include "datatype.c"
#pragma region 【算法6 - 1(a)】顺序查找
int Seq_Search_1(datatype data[], keytype kx, int n)
{ //查找表数据存放在data[1] 至data[n]中
  //在表data中查找关键码为kx的数据元素，若找到返回该元素在数组中的下标，否则返回0
    int i = 1;
    while (i <= n && data[i].key != kx)
        i++; //从表头端向后查找
    if (i > n)
        return 0;
    else
        return i;
}
#pragma endregion
#pragma region【算法6 - 1(b)】加监视哨后的顺序查找
    int Seq_Search_2(datatype data[], keytype kx, int n)
{ //查找表数据存放在data[1] 至data[n]中
  //在表data中查找关键码为kx的数据元素，若找到返回该元素在数组中的下标，否则返回0
    data[0].key = kx;
    i = n;
    while (data[i].key != kx)
        i--; // 向前查找
    return i;
}
#pragma endregion
#pragma region 【算法6 - 2】单链表上的顺序查找
LSNode *Link_Search(LSTable LT, keytype kx)
{ //在表LT中查找关键码为kx的数据元素，若找到返回该元素所在结点的地址，否则NULL
    LSNode *p;
    p = LT->next; // p指向第一个结点
    while (p && p->data.key != kx)
        p = p->next;
    return (p);
}
//算法的时间复杂度为O(n)。
#pragma endregion